// 精简版 - 只获取 Mall ID

document.addEventListener('DOMContentLoaded', () => {
  const getMallIdBtn = document.getElementById('getMallIdBtn');
  const copyBtn = document.getElementById('copyBtn');
  const statusEl = document.getElementById('status');
  const mallIdDisplay = document.getElementById('mallIdDisplay');
  const mallIdValue = document.getElementById('mallIdValue');
  const mallNameValue = document.getElementById('mallNameValue');

  // ========== 防抖控制 ==========
  let isRequesting = false; // 是否正在请求中
  let lastRequestTime = 0; // 上次请求时间
  const REQUEST_COOLDOWN = 3000; // 按钮冷却时间：3秒
  let cooldownTimer = null; // 冷却倒计时定时器
  const originalButtonText = '🎯 获取店铺信息'; // 按钮原始文本

  // 获取店铺信息按钮点击事件
  getMallIdBtn.addEventListener('click', async () => {
    // 1. 检查是否正在请求中
    if (isRequesting) {
      showStatus('⏸️ 请求正在进行中，请稍候...', 'warning');
      console.log('🚫 防抖拦截：请求正在进行中');
      return;
    }

    // 2. 检查冷却时间
    const now = Date.now();
    const timeSinceLastRequest = now - lastRequestTime;
    if (timeSinceLastRequest < REQUEST_COOLDOWN) {
      const waitTime = Math.ceil((REQUEST_COOLDOWN - timeSinceLastRequest) / 1000);
      showStatus(`⏸️ 请等待 ${waitTime} 秒后再试`, 'warning');
      console.log(`🚫 防抖拦截：还需等待 ${waitTime} 秒`);

      // 启动冷却倒计时显示
      startCooldownTimer(waitTime);
      return;
    }

    // 3. 开始请求
    isRequesting = true;
    lastRequestTime = now;
    showStatus('正在获取店铺信息...', 'loading');
    getMallIdBtn.disabled = true;
    mallIdDisplay.classList.remove('show');

    try {
      // 获取当前标签页
      const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });

      // 检查是否在拼多多页面
      if (!tab.url || !tab.url.includes('pinduoduo.com')) {
        showStatus('❌ 请在拼多多商家后台页面使用此工具', 'error');
        getMallIdBtn.disabled = false;
        isRequesting = false; // 重置请求状态
        return;
      }

      // 发送消息给 content script
      chrome.tabs.sendMessage(tab.id, { action: 'getMallId' }, (response) => {
        // 请求完成，重置状态
        isRequesting = false;
        getMallIdBtn.disabled = false;

        if (chrome.runtime.lastError) {
          console.error('发送消息失败:', chrome.runtime.lastError);
          showStatus('❌ 插件未正确加载，请刷新页面后重试', 'error');
          return;
        }

        if (response && response.success) {
          showStatus('✅ 获取成功！', 'success');
          displayMallId(response.mall_id, response.mall_name);
        } else {
          showStatus('❌ ' + (response?.error || '获取失败'), 'error');
        }
      });

    } catch (error) {
      console.error('获取 Mall ID 失败:', error);
      showStatus('❌ 错误: ' + error.message, 'error');
      getMallIdBtn.disabled = false;
      isRequesting = false; // 重置请求状态
    }
  });

  // 复制按钮点击事件
  copyBtn.addEventListener('click', () => {
    const mallId = mallIdValue.textContent;
    if (mallId && mallId !== '-') {
      navigator.clipboard.writeText(mallId).then(() => {
        const originalText = copyBtn.textContent;
        copyBtn.textContent = '✅ 已复制！';
        setTimeout(() => {
          copyBtn.textContent = originalText;
        }, 2000);
      }).catch(err => {
        console.error('复制失败:', err);
        alert('复制失败，请手动复制');
      });
    }
  });

  // 显示状态
  function showStatus(message, type) {
    statusEl.textContent = message;
    statusEl.className = 'status show ' + type;
  }

  // 显示店铺信息
  function displayMallId(mallId, mallName) {
    mallIdValue.textContent = mallId || '-';
    mallNameValue.textContent = mallName || '未知店铺';
    mallIdDisplay.classList.add('show');
  }

  // 启动冷却倒计时
  function startCooldownTimer(seconds) {
    // 清除之前的定时器
    if (cooldownTimer) {
      clearInterval(cooldownTimer);
    }

    let remainingSeconds = seconds;
    getMallIdBtn.disabled = true;
    getMallIdBtn.textContent = `⏳ 等待 ${remainingSeconds} 秒...`;

    cooldownTimer = setInterval(() => {
      remainingSeconds--;
      if (remainingSeconds > 0) {
        getMallIdBtn.textContent = `⏳ 等待 ${remainingSeconds} 秒...`;
      } else {
        // 倒计时结束，恢复按钮
        clearInterval(cooldownTimer);
        cooldownTimer = null;
        getMallIdBtn.disabled = false;
        getMallIdBtn.textContent = originalButtonText;
      }
    }, 1000);
  }
});

